`use strict`
import axios from 'axios';

const config = {
    timeout: 120 * 1000,
    withCredentials: true,
}

const _axios = axios.create(config)

/**
 * 错误消息
 * @param error
 * @returns {Promise<never>}
 */
function errorMessage(error) {
    if (error && error.response) {
        switch (error.response.status) {
            case 400:
                error.message = '错误请求'
                break
            case 401:
                error.message = '未经授权'
                break
            case 403:
                error.message = '拒绝访问'
                break
            case 404:
                error.message = '请求错误,未找到资源'
                break
            case 405:
                error.message = '请求方法未经允许'
                break
            case 408:
                error.message = '请求超时'
                break
            case 500:
                error.message = '服务器端出错'
                break
            case 501:
                error.message = '网络未实现'
                break
            case 502:
                error.message = '网络错误'
                break
            case 503:
                error.message = '服务不可用'
                break
            case 504:
                error.message = '网络超时'
                break
            case 505:
                error.message = 'HTTP版本不支持该请求'
                break
            default:
                error.message = `连接错误${error.response.status}`
                break
        }
    } else {
        error.message = '连接服务器失败'
    }
    alert(error.message)
    return Promise.reject(error)
}

/**
 * 拦截请求对象
 */
_axios.interceptors.request.use(config => {
    // if (sessionStorage.getItem('TOKEN')) {
    //     config.headers['token'] = sessionStorage.getItem('TOKEN')
    // }
    return config
}, error => errorMessage(error))

/**
 * 插件导出
 */
export default Window.prototype.$axios = _axios